package com.liliudong.template.biz.service.sys;

import cn.hutool.core.lang.tree.Tree;
import com.mybatisflex.core.service.IService;
import com.mybatisflex.core.paginate.Page;
import com.liliudong.template.common.entity.sys.SysDept;
import com.liliudong.template.common.request.sys.SysDeptAddRequest;
import com.liliudong.template.common.request.sys.SysDeptModifyRequest;
import com.liliudong.template.common.request.sys.SysDeptPageRequest;
import com.liliudong.template.common.response.sys.SysDeptDetailResponse;
import com.liliudong.template.common.response.sys.SysDeptPageResponse;

import java.util.List;

/**
 * 服务
 *
 * @author liudo
 * @date 2024-08-01 19:44:49
 */
public interface SysDeptService extends IService<SysDept> {

    /**
     * 添加
     *
     * @param sysDeptAddRequest 新增dto
     */
    void addOne(SysDeptAddRequest sysDeptAddRequest);

    /**
     * 删除
     *
     * @param id 主键
     */
    void deleteById(Long id);

    /**
     * 修改
     *
     * @param id               主键
     * @param sysDeptModifyRequest 更新dto
     */
    void modifyById(Long id, SysDeptModifyRequest sysDeptModifyRequest);

    /**
     * 详情
     *
     * @param id 主键
     * @return {@link SysDeptDetailResponse }
     */
    SysDeptDetailResponse detailById(Long id);

    /**
     * 分页
     *
     * @param page           页面
     * @param size           大小
     * @param sysDeptPageRequest dto
     * @return {@link Page< SysDeptPageResponse > }
     */
    Page<SysDeptPageResponse> queryPage(Long page, Long size, SysDeptPageRequest sysDeptPageRequest);

    /**
     * 查询树
     *
     * @return {@link List }<{@link Tree }<{@link Long }>>
     */
    List<Tree<Long>> queryTree();
}
